//
//  PageNode.h
//  iOSCodeLearning
//
//  Created by TFAppleWork-Summer on 2018/3/14.
//  Copyright © 2018年 Ace. All rights reserved.
//

#import "ASDisplayNode.h"
#import <AsyncDisplayKit/AsyncDisplayKit.h>


@class PageNode;
@protocol PageNodeDelegate <NSObject>

@required

/**
 index 下应该显示的控制器

 @param pageNode 当前的pageNode
 @param index 下标
 */
-(UIViewController*)pageNode:(PageNode *)pageNode viewControllAtIndex:(NSInteger)index;


/**
 一共返回多少个控制器

 @param pageNode pageNode
 */
-(NSInteger)numberOfPagesInPageNode:(PageNode *)pageNode;

@optional
/**
 pageNode正在滚动时候的回调

 @param pageNode
 @param index 目标位置
 @param percent 目前滚动的百分比
 */
-(void)pageNode:(PageNode *)pageNode
  scrollToIndex:(NSInteger)index
      byPercent:(CGFloat)percent;


/**
 将要滚动出来的控制器的下标

 @param pageNode pagenode
 @param index 下标
 */
-(void)pageNode:(PageNode *)pageNode didSelectViewControllerAtIndex:(NSInteger)index;


@end

@interface PageNode : ASDisplayNode


@property (nonatomic, strong) ASPagerNode *pagerNode;

/**
 当前下标
 */
@property (nonatomic, assign) NSInteger currentPageIndex;

@property (nonatomic, weak) id<PageNodeDelegate> delegate;



/**
 滚动到特定的位置

 @param index 下标
 @param animated 是否使用动画
 */
-(void)scrollToViewVontrollerAtIndex:(NSInteger )index animated:(BOOL)animated;


/**
 获得当前下标下的控制器

 @param index 下标
 */
-(UIViewController *)viewControllerAtPageIndex:(NSInteger)index;


/**
 AS是异步刷新UI的， completion 是刷新后完成的回调

 @param completion 完成回调
 */
-(void)reloadDataWithCompletion:(void(^)(void))completion;


@end
